Шаг 68 - Поддержка стандартного размера, цвета, шрифта и настроек ввода системы

При отображении настраиваемых элементов управления или содержимого окна Ваше приложение должно считывать и использовать системные настройки пользовательского интерфейса. Стандартные элементы управления, поставляемые USER32.DLL и COMCTL32.DLL, автоматически поддерживают все необходимые настройки. Приложения могут добавлять поддержку этих настроек в свои окна, вызвав DefWindowProc в процедуре окна. Приложения должны аккуратно обращаться с этими настройками:

При создании нестандартных элементов управления

При создании элементов управления, отображаемых владельцами

При использовании родительских и дочерних классов для изменения обычного режима работы стандартного элемента управления

При обработке сообщения без вызова DefWindowProc (особенно при отображении любых областей, не являющихся клиентскими)

При обработке ввода на низком уровне, который игнорирует обычные сообщения клавиатуры и мыши (например, двойной щелчок и нажатие клавиши Shift)

Эти настройки устанавливаются с помощью функций GetSysColor, GetSystemMetrics и SystemParametersInfo. Для получения дополнительной информации обратитесь к Microsoft Platform SDK или

http://premium.microsoft.com/msdn/library/sdkdoc/sysmgmt/sysinfo_8fjn.htm 
http://premium.microsoft.com/msdn/library/sdkdoc/sysmgmt/sysinfo_4p67.htm 

Все приложения должны поддерживать:
SPI_GETHIGHCONTRASTВсе настройки GetSysColor являются обязательными для меню, диалоговых окон и других стандартных элементов пользовательского интерфейса. См. ниже раздел 2.
SPI_GETWORKAREAРазмер рабочей области основного экрана

Нестандартные поля для выделения или редактирования текста должны поддерживать:
SPI_GETCARETWIDTHШирина курсора в поле редактирования

Нестандартные выпадающие списки должны поддерживать:
SPI_GETCOMBOBOXANIMATIONЕсли значением данной настройки является FALSE, эффект соскальзывания для выпадающих списков должен быть отключен

Нестандартные обработчики клавиатуры (низкоуровневый ввод) должны поддерживать:
SPI_GETKEYBOARDDELAY
SPI_GETKEYBOARDSPEED
Настройка задержки перед началом повтора символов Настройка скорости повтора символов
SPI_GETFILTERKEYSРасширенный интервал для указанных выше настроек

Нестандартные меню должны поддерживать:
SM_CYMENUCHECK, CXMENUCHECKУстановленные по умолчанию размеры флажка меню
SM_CYMENUВысота строки меню
SPI_GETNONCLIENTMETRICS IfMenuHeight
lfMenuFont
lfMessageFont

Высота меню
Шрифт меню
Шрифт окна сообщения
SPI_GETSELECTIONFADEЕсли значением данной настройки является FALSE, то функция исчезновения элементов меню должна быть отключена
SPI_GETMENUANIMATIONЕсли значением данной настройки является FALSE, то эффекты анимации меню должны быть отключены
SPI_GETMENUFADEЕсли значением данной настройки является FALSE, то эффекты анимации исчезновения меню должны быть отключена

Указанные функции мыши должны поддерживать:
SM_CYDOUBLECLK,
SM_CXDOUBLECLK
Максимально допустимое вертикальное и горизонтальное расстояние, на которое мышь может сдвинуться между последовательными щелчками, интерпретируемыми как двойной щелчок.
SM_CYDRAG,
SM_CXDRAG
Минимальное вертикальное и горизонтальное расстояние, на которое должна сдвинуться мышь при нажатой кнопке, для начала операции буксировки
SPI_GETMOUSEHOVERHEIGHT
SPI_GETMOUSEHOVERWIDTH
Высота и ширина прямоугольника, внутри которого должен находиться указатель мыши для активизации эффекта ожидания ввода
SPI_GETMOUSEHOVERTIMEВремя ожидания ввода

Нестандартные полосы прокрутки должны поддерживать:
SM_CYHSCROLL
SM_CXVSCROLL
Высота горизонтальной полосы прокрутки Ширина вертикальной полосы прокрутки

Звуковые функции приложения должны поддерживать:
SPI_GETSHOWSOUNDS Если значением является TRUE, то приложение должно представлять всю информацию визуально, а не только посредством звуковых эффектов

Нестандартные подсказки должны поддерживать:
SPI_GETNONCLIENTMETRICS SPI_lfStatusFontШрифт, используемый в строках состояния или подсказках
SPI_GETTOOLTIPANIMATIONЕсли значением является FALSE, то анимация подсказок должна быть отключена

Нестандартные кадры окон должны поддерживать:
SM_CYSMCAPTIONВысота заголовка
SPI_GETNONCLIENTMETRICS IfCaptionFontИнформация о шрифте заголовка
SM_CYBORDER, SM_CXBORDERМинимальная толщина линии в пикселах. Приложения не должны рисовать линии тоньше, чем указано, потому что на мониторах с высоким разрешением линия толщиной в 1 пиксел будет практически не видна. (Это значение устанавливается драйвером экрана и увеличивается пользователем, когда он выбирает Специальный размер системного шрифта на Панели управления).
SM_CXEDGE
SM_CYEDGE
Толщина трехмерной границы в пикселах. Каждая трехмерная граница состоит из двух смежных линий, таким образом ее толщина равна 2 * SM_CxBORDER.
SM_CXSIZEFRAME
SM_CYSIZEFRAME
Толщина рамки окна, размер которого можно изменять, в пикселах.
SM_CYFIXEDFRAME
SM_CXFIXEDFRAME
Толщина рамки окна, размер которого нельзя изменять, в пикселах. Она состоит из одной трехмерной границы, толщина которой равна SM_CxEDGE плюс одна пустая линия, толщина которой равна SM_CxBORDER.

Hosted by uCoz